#include <bits/stdc++.h>
#define endl '\n'
using namespace std;

const int TEST_CASES = 25; // 生成25个测试用例
random_device rd;
mt19937 gen(rd());

// 生成一个随机整数
int randomInt(int min, int max) {
    return uniform_int_distribution<int>(min, max)(gen);
}

// 生成测试用例
void test(int testCase, ofstream& fout) {
    int n = randomInt(1, 100); // 字符串长度
    int l = randomInt(1, n); // 左边界
    int r = randomInt(l, n); // 右边界
    string s;

    // 根据测试用例编号调整难度
    if (testCase <= 5) {
        // 简单测试用例：所有字符均为 'o'
        s = string(n, 'o');
    } else if (testCase <= 10) {
        // 中等测试用例：部分字符不为 'o'
        s = string(n, 'o');
        for (int i = 0; i < n / 3; i++) {
            s[randomInt(0, n - 1)] = 'x';
        }
    } else {
        // 困难测试用例：随机字符
        for (int i = 0; i < n; i++) {
            s += (randomInt(0, 1) ? 'o' : 'x');
        }
    }

    // 特殊情况：边界测试
    if (testCase == 1) {
        // 样例1：l = 1, r = n
        l = 1;
        r = n;
    } else if (testCase == 2) {
        // 样例2：l = r
        l = randomInt(1, n);
        r = l;
    }

    fout << n << " " << l << " " << r << endl << s << endl;
}

void mk_in() {
    // 创建testdata目录（如果不存在）
    if (system("mkdir -p testdata") != 0) {
        cerr << "创建testdata目录失败" << endl;
        return;
    }
    
    for (int i = 1; i <= TEST_CASES; ++i) {
        string in_name = "testdata/" + to_string(i) + ".in";
        ofstream fout(in_name);
        test(i, fout);
        fout.close();
        cout << "生成【" << i << ".in】数据成功\n";
    }
}

void mk_out() {
    for (int i = 1; i <= TEST_CASES; ++i) {
        string in_name = "testdata/" + to_string(i) + ".in";
        string out_name = "testdata/" + to_string(i) + ".out";
        string cmd = "./std < " + in_name + " > " + out_name;
        if (system(cmd.c_str()) != 0) {
            cerr << "生成【" << i << ".out】数据失败\n";
            return;
        }
        cout << "生成【" << i << ".out】数据成功\n";
    }
}

int main() {
    // 编译标准程序
    if (system("g++ std.cpp -o std -std=c++17") != 0) {
        cerr << "编译标准程序失败" << endl;
        return 1;
    }
    
    mk_in();
    mk_out();
    return 0;
}